home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / m / RCS / math.h,v < prev    next >
Text File  |  1992-03-27  |  10KB  |  390 lines

  1. head     1.7;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.7
  10. date     92.03.27.13.45.54;  author rab;  state Exp;
  11. branches ;
  12. next     1.6;
  13.  
  14. 1.6
  15. date     90.09.18.17.41.39;  author kupfer;  state Exp;
  16. branches ;
  17. next     1.5;
  18.  
  19. 1.5
  20. date     90.09.11.14.41.53;  author kupfer;  state Exp;
  21. branches ;
  22. next     1.4;
  23.  
  24. 1.4
  25. date     90.07.02.18.57.06;  author tve;  state Exp;
  26. branches ;
  27. next     1.3;
  28.  
  29. 1.3
  30. date     90.06.29.10.13.55;  author tve;  state Exp;
  31. branches ;
  32. next     1.2;
  33.  
  34. 1.2
  35. date     90.02.15.18.24.11;  author rab;  state Exp;
  36. branches ;
  37. next     1.1;
  38.  
  39. 1.1
  40. date     89.10.05.15.43.31;  author rab;  state Exp;
  41. branches ;
  42. next     ;
  43.  
  44.  
  45. desc
  46. @@
  47.  
  48.  
  49. 1.7
  50. log
  51. @Improved the handling of "const" (pure) functions.
  52. @
  53. text
  54. @/*
  55.  * math.h --
  56.  *
  57.  *    
  58.  *
  59.  * Copyright 1989 Regents of the University of California
  60.  * Permission to use, copy, modify, and distribute this
  61.  * software and its documentation for any purpose and without
  62.  * fee is hereby granted, provided that the above copyright
  63.  * notice appear in all copies.  The University of California
  64.  * makes no representations about the suitability of this
  65.  * software for any purpose.  It is provided "as is" without
  66.  * express or implied warranty.
  67.  *
  68.  * $Header: /sprite/src/lib/m/RCS/math.h,v 1.6 90/09/18 17:41:39 kupfer Exp Locker: rab $
  69.  */
  70.  
  71. #ifndef _MATH_H
  72. #define _MATH_H
  73.  
  74. #ifdef __GNUC__                 /* Use const function attribute */
  75.     /* As a non-standard extension, Gnu C will treat any function
  76.        that has a `const' attribute as a pure function.  A pure function
  77.        has no side effects, and the return value is function of the
  78.        arguments only.  If a pure function is invoked several times
  79.        with the same arguments, the compiler can optimize out all but
  80.        the first call.
  81.      */
  82. #define _CONST_FUNC  const
  83. #else
  84. #define _CONST_FUNC
  85. #endif
  86.  
  87. #define M_LN2   0.69314718055994530942
  88. #define M_PI    3.14159265358979323846
  89. #define M_SQRT2 1.41421356237309504880
  90.  
  91. #define M_E             2.7182818284590452354
  92. #define M_LOG2E         1.4426950408889634074
  93. #define M_LOG10E        0.43429448190325182765
  94. #define M_LN10          2.30258509299404568402
  95. #define M_PI_2          1.57079632679489661923
  96. #define M_PI_4          0.78539816339744830962
  97. #define M_1_PI          0.31830988618379067154
  98. #define M_2_PI          0.63661977236758134308
  99. #define M_2_SQRTPI      1.12837916709551257390
  100. #define M_SQRT1_2       0.70710678118654752440
  101. #define _POLY1(x, c)    ((c)[0] * (x) + (c)[1])
  102. #define _POLY2(x, c)    (_POLY1((x), (c)) * (x) + (c)[2])
  103. #define _POLY3(x, c)    (_POLY2((x), (c)) * (x) + (c)[3])
  104. #define _POLY4(x, c)    (_POLY3((x), (c)) * (x) + (c)[4])
  105. #define _POLY5(x, c)    (_POLY4((x), (c)) * (x) + (c)[5])
  106. #define _POLY6(x, c)    (_POLY5((x), (c)) * (x) + (c)[6])
  107. #define _POLY7(x, c)    (_POLY6((x), (c)) * (x) + (c)[7])
  108. #define _POLY8(x, c)    (_POLY7((x), (c)) * (x) + (c)[8])
  109. #define _POLY9(x, c)    (_POLY8((x), (c)) * (x) + (c)[9])
  110.  
  111. #ifdef __STDC__
  112.  
  113. #if defined(sun3) && !defined(__STRICT_ANSI__) && !defined(__SOFT_FLOAT__)
  114.  
  115. #include <math-68881.h>
  116.  
  117. #else
  118.  
  119. extern _CONST_FUNC double    sin(double x);
  120. extern _CONST_FUNC double    cos(double x);
  121. extern _CONST_FUNC double    tan(double x);
  122. extern _CONST_FUNC double    asin(double x);
  123. extern _CONST_FUNC double    acos(double x);
  124. extern _CONST_FUNC double    atan(double x);
  125. extern _CONST_FUNC double    atan2(double y, double x);
  126. extern _CONST_FUNC double    sinh(double x);
  127. extern _CONST_FUNC double    cosh(double x);
  128. extern _CONST_FUNC double    tanh(double x);
  129. extern _CONST_FUNC double    exp(double x);
  130. extern _CONST_FUNC double    log(double x);
  131. extern _CONST_FUNC double    log10(double x);
  132. extern _CONST_FUNC double    pow(double x, double y);
  133. extern _CONST_FUNC double    sqrt(double x);
  134. extern _CONST_FUNC double    ceil(double x);
  135. extern _CONST_FUNC double    floor(double x);
  136. extern _CONST_FUNC double    fabs(double x);
  137. extern _CONST_FUNC double    ldexp(double x, int n);
  138. extern _CONST_FUNC double    fmod(double x , double y);
  139. extern double           frexp(double x, int *exp);
  140. extern double           modf(double x, double *ip);
  141.  
  142. extern _CONST_FUNC double    atanh(double x);
  143. extern _CONST_FUNC double    asinh(double x);
  144. extern _CONST_FUNC double    acosh(double x);
  145. extern _CONST_FUNC double    expm1(double x);
  146.  
  147. #endif
  148.  
  149. extern _CONST_FUNC double    erf(double x);
  150. extern _CONST_FUNC double    erfc(double x);
  151. extern _CONST_FUNC double    log1p(double x);
  152. extern _CONST_FUNC double    rint(double x);
  153. extern _CONST_FUNC double    lgamma(double x);
  154. extern _CONST_FUNC double    hypot(double x, double y);
  155. extern _CONST_FUNC double    cabs();
  156. extern _CONST_FUNC double    copysign(double x, double y);
  157. extern _CONST_FUNC double    drem(double x, double y);
  158. extern _CONST_FUNC double    logb(double x);
  159. extern _CONST_FUNC double    scalb(double x, int n);
  160. extern _CONST_FUNC double    j0(double x);
  161. extern _CONST_FUNC double    j1(double x);
  162. extern _CONST_FUNC double    jn(int n, double x);
  163. extern _CONST_FUNC double    y0(double x);
  164. extern _CONST_FUNC double    y1(double x);
  165. extern _CONST_FUNC double    yn(int n, double x);
  166. extern _CONST_FUNC double    cbrt(double x);
  167.  
  168. extern int finite(double x);
  169.  
  170. extern int isinf(double x);
  171. extern int isnan(double x);
  172.  
  173. #else /* __STDC__ */
  174.  
  175. extern double   sin();
  176. extern double   cos();
  177. extern double   tan();
  178. extern double   asin();
  179. extern double   acos();
  180. extern double   atan();
  181. extern double   atan2();
  182. extern double   sinh();
  183. extern double   cosh();
  184. extern double   tanh();
  185. extern double   exp();
  186. extern double   log();
  187. extern double   log10();
  188. extern double   pow();
  189. extern double   sqrt();
  190. extern double   ceil();
  191. extern double   floor();
  192. extern double   fabs();
  193. extern double   ldexp();
  194. extern double   fmod();
  195. extern double   frexp();
  196. extern double   modf();
  197. extern double   asinh();
  198. extern double   acosh();
  199. extern double   atanh();
  200. extern double   erf();
  201. extern double   erfc();
  202. extern double   expm1();
  203. extern double   log1p();
  204. extern double   rint();
  205. extern double   lgamma();
  206. extern double   hypot();
  207. extern double   cabs();
  208. extern double   copysign();
  209. extern double   drem();
  210. extern double   logb();
  211. extern double   scalb();
  212. extern double   j0();
  213. extern double   j1();
  214. extern double   jn();
  215. extern double   y0();
  216. extern double   y1();
  217. extern double   yn();
  218. extern double   cbrt();
  219. extern int finite();
  220. extern int isinf();
  221. extern int isnan();
  222.  
  223. #endif /* __STDC__ */
  224.  
  225. #ifndef HUGE_VAL
  226. #define HUGE_VAL    1.701411733192644270e38
  227. #endif
  228.  
  229. #define HUGE        HUGE_VAL
  230.  
  231. #undef _CONST_FUNC
  232.  
  233. #endif /* _MATH_H */
  234.  
  235. @
  236.  
  237.  
  238. 1.6
  239. log
  240. @Dike out declaration for atof().  It should be in stdlib anyway.
  241. (We're doing it now because it's giving users problems by conflicting
  242. with a fully ANSI, but private, stdlib.h.)
  243. @
  244. text
  245. @d15 1
  246. a15 1
  247.  * $Header: /sprite/src/lib/m/RCS/math.h,v 1.5 90/09/11 14:41:53 kupfer Exp Locker: kupfer $
  248. d22 8
  249. a29 1
  250. #define _CONST  const
  251. d31 1
  252. a31 1
  253. #define _CONST
  254. d66 20
  255. a85 20
  256. extern _CONST double    sin(double x);
  257. extern _CONST double    cos(double x);
  258. extern _CONST double    tan(double x);
  259. extern _CONST double    asin(double x);
  260. extern _CONST double    acos(double x);
  261. extern _CONST double    atan(double x);
  262. extern _CONST double    atan2(double y, double x);
  263. extern _CONST double    sinh(double x);
  264. extern _CONST double    cosh(double x);
  265. extern _CONST double    tanh(double x);
  266. extern _CONST double    exp(double x);
  267. extern _CONST double    log(double x);
  268. extern _CONST double    log10(double x);
  269. extern _CONST double    pow(double x, double y);
  270. extern _CONST double    sqrt(double x);
  271. extern _CONST double    ceil(double x);
  272. extern _CONST double    floor(double x);
  273. extern _CONST double    fabs(double x);
  274. extern _CONST double    ldexp(double x, int n);
  275. extern _CONST double    fmod(double x , double y);
  276. d89 4
  277. a92 4
  278. extern _CONST double    atanh(double x);
  279. extern _CONST double    asinh(double x);
  280. extern _CONST double    acosh(double x);
  281. extern _CONST double    expm1(double x);
  282. d96 18
  283. a113 18
  284. extern _CONST double    erf(double x);
  285. extern _CONST double    erfc(double x);
  286. extern _CONST double    log1p(double x);
  287. extern _CONST double    rint(double x);
  288. extern _CONST double    lgamma(double x);
  289. extern _CONST double    hypot(double x, double y);
  290. extern _CONST double    cabs();
  291. extern _CONST double    copysign(double x, double y);
  292. extern _CONST double    drem(double x, double y);
  293. extern _CONST double    logb(double x);
  294. extern _CONST double    scalb(double x, int n);
  295. extern _CONST double    j0(double x);
  296. extern _CONST double    j1(double x);
  297. extern _CONST double    jn(int n, double x);
  298. extern _CONST double    y0(double x);
  299. extern _CONST double    y1(double x);
  300. extern _CONST double    yn(int n, double x);
  301. extern _CONST double    cbrt(double x);
  302. d177 2
  303. @
  304.  
  305.  
  306. 1.5
  307. log
  308. @Fix some prototypes, add decl's for isinf() and isnan().
  309. @
  310. text
  311. @d15 1
  312. a15 1
  313.  * $Header: /sprite/src/lib/m/RCS/math.h,v 1.4 90/07/02 18:57:06 tve Exp Locker: kupfer $
  314. a112 2
  315. extern double atof(char *nptr);        /* atof should be in stdlib.h */
  316.  
  317. a161 1
  318. extern double atof();
  319. @
  320.  
  321.  
  322. 1.4
  323. log
  324. @the constants at the beginning of the file are now always defined, not only
  325. if __STDC__ is defined.
  326. @
  327. text
  328. @d15 1
  329. a15 1
  330.  * $Header: /sprite/src/lib/m/RCS/math.h,v 1.3 90/06/29 10:13:55 tve Exp Locker: tve $
  331. d80 1
  332. a80 1
  333. extern double           modf(double x, int *ip);
  334. d110 2
  335. a111 1
  336. extern double atof(_CONST char *nptr);     /* atof should be in stdlib.h */
  337. d113 2
  338. d162 2
  339. @
  340.  
  341.  
  342. 1.3
  343. log
  344. @added "const" definitions back in for __STDC__, the bug in gcc which caused
  345. problems is hopefully long gone
  346. @
  347. text
  348. @d15 1
  349. a15 1
  350.  * $Header: /sprite/src/lib/m/RCS/math.h,v 1.2 90/02/15 18:24:11 rab Exp Locker: tve $
  351. a20 2
  352. #ifdef __STDC__
  353.  
  354. d50 2
  355. @
  356.  
  357.  
  358. 1.2
  359. log
  360. @Added a bunch of constants, for pi and e and stuff like that.
  361. @
  362. text
  363. @d15 1
  364. a15 1
  365.  * $Header: /sprite/src/lib/m/RCS/math.h,v 1.1 89/10/05 15:43:31 rab Exp Locker: rab $
  366. a23 1
  367. #if 0
  368. a25 3
  369. #define _CONST      /* there is a compiler bug that causes this to not work. */
  370. #endif
  371. #else
  372. d110 1
  373. a110 1
  374. extern double atof(char *nptr);     /* atof should be in stdlib.h */
  375. @
  376.  
  377.  
  378. 1.1
  379. log
  380. @Initial revision
  381. @
  382. text
  383. @d15 1
  384. a15 1
  385.  * $Header$
  386. d24 1
  387. d27 3
  388. d32 24
  389. @
  390.